# -*- coding: utf-8 -*-
"""
@Time    : 2024/7/15 14:59 
@Author  : ZhangShenao 
@File    : cosine_similarity.py 
@Desc    : 计算向量的余弦相似度
"""

from typing import List

import numpy as np
from numpy.linalg import norm


def cosine_similarity(vector1: List[float], vector2: List[float]) -> float:
    """
    计算两个向量的余弦相似度
    计算公式: 余弦相似度 = vector1与vector2的点积 / vector1的长度 * vector2的长度
    """

    # 计算两个向量的点积
    dot_product = np.dot(vector1, vector2)

    # 计算两个向量的长度
    norm_vec1 = norm(vector1)
    norm_vec2 = norm(vector2)

    # 计算余弦相似度
    return dot_product / (norm_vec1 * norm_vec2)
